function drawShape(N)
%DRAWSHAPE Draws a unit circle or regular N-sided polygon.
%   DRAWSHAPE() draws a unit circle.
%   DRAWSHAPE(N) draws a regular N-sided polygon if N is a natural number greater than 2.
%   If N is not valid, an error message is displayed.
%
%   Author: 杨帅栋

    % 当没有输入参数时，画个圆
    if nargin == 0
        % 画个单位圆
        theta = linspace(0, 2*pi, 100);%生成一个0-2pi的向量，这个向量有100个点
        x = cos(theta);%生成圆的x,y的坐标值
        y = sin(theta);
        plot(x, y, 'b-');%plot函数根据给定的x和y坐标绘制图形，'b-'指定使用蓝色实线绘制。
        axis equal;%axis equal命令设置图形的坐标轴比例，使得单位长度在x轴和y轴方向上相同。
        title('Unit Circle');%在图形的顶部添加标题"Unit Circle"。
        xlabel('x');%在x轴的底部添加标签"x"。
        ylabel('y');%在y轴的左侧添加标签"y"。
    else
        % Input provided, validate it
        if isnumeric(N) && isscalar(N) && N > 2 && floor(N) == N %检查N是否是数值，检查N是否是标量。确保N大于2，确保N是整数（自然数）。
            % Input is a valid natural number greater than 2, draw the polygon
            % 如果输入有效大于2，开始画正N多边形
            theta = linspace(0, 2*pi, N+1);%生成每个顶点的角度，包括回到起始点。
            x = cos(theta);%根据角度计算正 N 边形每个顶点的x坐标。
            y = sin(theta);%根据角度计算正 N 边形每个顶点的y坐标。
            plot(x, y, 'r-');%plot根据x和y坐标绘制图形，'r-'指定使用红色实线。
            axis equal;
            title(['Regular ' int2str(N) '-sided Polygon']);%int2str(N)将N转换为字符串，例如"N=5"时，标题为"Regular 5-sided Polygon"。
            xlabel('x');
            ylabel('y');

        else
            % Invalid input
            %非法输入，打印错误信息
            error('Input must be a natural number greater than 2.');
        end
    end
end


